<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=441519
-->
<head>
  <title>nsOuterDocAccessible chrome tests</title>
  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />

  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>

  <script type="application/javascript"
          src="common.js"></script>
  <script type="application/javascript"
          src="states.js"></script>
  <script type="application/javascript"
          src="role.js"></script>

  <script type="application/javascript">
    // needed error return value
    const ns_error_invalid_arg = Components.results.NS_ERROR_INVALID_ARG;

    function doTest()
    {
      // Get accessible for body tag.
      var docAcc = getAccessible(document);

      if (docAcc) {
        var outerDocAcc = getAccessible(docAcc.parent);

        if (outerDocAcc) {
          testRole(outerDocAcc, ROLE_INTERNAL_FRAME);

          // check if it is focusable.
          testStates(outerDocAcc, STATE_FOCUSABLE, 0);

          // see bug 428954: No name wanted for internal frame
          is(outerDocAcc.name, null, "Wrong name for internal frame!");

          // see bug 440770, no actions wanted on outer doc
          is(outerDocAcc.actionCount, 0,
             "Wrong number of actions for internal frame!");
          var actionTempStr; // not really used, just needs to receive a value
          try {
            actionTempStr = outerDocAcc.getActionName(0);
            do_throw("No exception thrown for actionName!");
          } catch(e) {
            ok(e.result, ns_error_invalid_arg,
               "Wrong return value for actionName call!");
          }

          try {
            actionTempStr = outerDocAcc.getActionDescription(0);
            do_throw("No exception thrown for actionDescription!");
          } catch(e) {
            ok(e.result, ns_error_invalid_arg,
               "Wrong return value for actionDescription call!");
          }

          try {
            outerDocAcc.doAction(0);
            do_throw("No exception thrown for doAction!");
          } catch(e) {
            ok(e.result, ns_error_invalid_arg,
               "Wrong return value for doAction call!");
          }
        }
      }

      SimpleTest.finish();
    }

    SimpleTest.waitForExplicitFinish();
    addA11yLoadEvent(doTest);
  </script>
</head>
<body>

  <a target="_blank"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=441519"
     title="nsOuterDocAccessible chrome tests">
    Mozilla Bug 441519
  </a>
  <p id="display"></p>
  <div id="content" style="display: none"></div>
  <pre id="test">
  </pre>
</body>
</html>
